﻿#ifndef GENERAL_H
#define GENERAL_H

#include <QObject>
#include <QStack>



bool isAllDigits(const QString& str);

int getNextNumberFromString(const QString iFormulaStr, QString& res_str);

int getFirstOperationSignPos(const QString iString);

bool isOperationSign(QChar ch);

template<typename T>
T caculateBySign(T num1, T num2, QChar sign);

template<typename T>
void printStack(QStack<T> const& iStack);

template<typename T>
T caculation(const QString str);

qint64 caculationByRule(QString rule, QList<QPair<QString, QString>> list);

QString removeOperation(QString str);

QString getOperation(QString str);


// 将字符串替换成正则表达式字符串
QString replaceWithRegex(QString str);

// 根据格式从字符串中匹配出相关的数字，并返回数字的列表
QHash<QString, qint64> getValueListFromStrByFormat(QString str, QString format);

// 根据运算符号将字符串进行分离
QStringList splitByOperationSign(QString str);

QList<QStringList> getRules(QString str);


QString translationByFormula(QHash<QString, qint64> hash, QString formula);


QString getStringFromLineByVarName(QString line, QString varName);

QString getDateTimeFromLog(QString text);



#endif // GENERAL_H
